/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import bc.ClienteFacadeLocal;
import be.Cliente;
import be.Tipocliente;
import be.Tipodocumento;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;

/**
 *
 * @author yzavaleta
 */
@Named("managedBeanCliente")
@SessionScoped
public class ManagedBeanCliente implements Serializable {

    @EJB
    private ClienteFacadeLocal clienteFacade;
    private Cliente objeto;
    private Cliente objetoCrear;
    private List<Cliente> lista;
    private List<Cliente> listaFiltrada;
    private List<SelectItem> ListaItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Cliente> myMapItems = new HashMap<Integer, Cliente>();
    
    public ManagedBeanCliente() {
        objeto = new Cliente();
        objetoCrear = new Cliente();
        lista = new LinkedList<>();
        listaFiltrada = new LinkedList<>();
    }
    
    public Cliente getObjeto() {
        return objeto;
    }
    
    public void setObjeto(Cliente objeto) {
        this.objeto = objeto;
    }
    
    public Cliente getObjetoCrear() {
        return objetoCrear;
    }
    
    public void setObjetoCrear(Cliente objetoCrear) {
        this.objetoCrear = objetoCrear;
    }
    
    public List<Cliente> getLista() {
        
        lista = new LinkedList<>();
        for (Cliente a : clienteFacade.findAll()) {
            
            if (a.getEstadoExistencia() == 1) {
                lista.add(a);
            }
            
        }
        
        return lista;
    }
    
    public void setLista(List<Cliente> lista) {
        this.lista = lista;
    }
    
    public List<Cliente> getListaFiltrada() {
        return listaFiltrada;
    }
    
    public void setListaFiltrada(List<Cliente> listaFiltrada) {
        this.listaFiltrada = listaFiltrada;
    }
    
    public List<SelectItem> getListaItems() {
        
        ListaItems = new LinkedList<SelectItem>();
        myMapItems = new HashMap<Integer, Cliente>();
        
        for (Cliente p : clienteFacade.findAll()) {
            
            if (p.getEstadoExistencia() == 1) {
                myMapItems.put(p.getId(), p);
                
                ListaItems.add(new SelectItem(p, p.getNombres() + " " + p.getApellidos()));
            }
            
        }
        return ListaItems;
    }
    
    public void setListaItems(List<SelectItem> ListaItems) {
        this.ListaItems = ListaItems;
    }
    
    public HashMap<Integer, Cliente> getMyMapItems() {
        return myMapItems;
    }
    
    public void setMyMapItems(HashMap<Integer, Cliente> myMapItems) {
        this.myMapItems = myMapItems;
    }
    
    public void llenar_myItems() {
        try {
            myMapItems = new HashMap<Integer, Cliente>();
            for (Cliente p : clienteFacade.findAll()) {
                
                if (p.getEstadoExistencia() == 1) {
                    myMapItems.put(p.getId(), p);
                    ListaItems.add(new SelectItem(p, p.getNombres() + " " + p.getApellidos()));                    
                }
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Cliente getObjeto(int id) {
        
        return myMapItems.get(id);
    }
    
    public void crear() {
        try {
            try {
                //  objetoCrear.setTipodocumento1(new Tipodocumento(1));
               // objetoCrear.setTipodocumento(new Tipodocumento(1));
               // System.out.println("Entro a crear");
                // POR AHORA LE ESTAMOS INGRESANDO POR AQUI PERO ESTO DEBE SER UN COMBO.
                
                objetoCrear.setTipocliente(new Tipocliente(1));
                
                
                objetoCrear.setFechaCreacionSistema(new Date());
                objetoCrear.setFechaCreacionUsuario(new Date());
                objetoCrear.setFechaEliminacion(new Date());
                objetoCrear.setEstadoExistencia(1);
                clienteFacade.create(objetoCrear);
                System.out.println(" se creo correctamente");
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("REGISTRO GRABADO CON EXITO", "NUEVO ITEM"));
                
            } catch (Exception e) {
                e.printStackTrace();
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("ERROR AL GRABAR", "CONTACTE AL ADMINISTRADOR"));
                
            }
        } catch (Exception e) {
        }
        
    }
    
}
